home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / nihcl-30.lha / nihcl-3.0 / vectest / intvec.c < prev    next >
C/C++ Source or Header  |  1990-05-16  |  7KB  |  206 lines

  1. /* Test Vector IntVec class
  2.  
  3.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  4.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  5.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  6.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  7.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  8.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  9.  
  10. Author:
  11.         Ted Persky
  12.     Bg. 12A, Rm. 2031
  13.     Computer Systems Laboratory
  14.     Division of Computer Research and Technology
  15.     National Institutes of Health
  16.     Bethesda, Maryland 20892
  17.     Phone: (301) 496-2963
  18.     uucp: uunet!nih-csl!tpersky
  19.     Internet:tpersky@alw.nih.gov
  20.  
  21. Function:
  22.     
  23. Modification History:
  24.     
  25. $Log:    intvec.c,v $
  26.  * Revision 3.0  90/05/16  23:06:39  kgorlen
  27.  * Release for 1st edition.
  28.  * 
  29. */
  30. #include "IntVec.h"
  31. static char rcsid[] = "$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/vectest/RCS/intvec.c,v 3.0 90/05/16 23:06:39 kgorlen Rel $";
  32.  
  33. static int initI[] = { 1,3,5 };
  34. static const IntVec I(initI,3);        // I = { 1 3 5 }
  35.  
  36. #ifndef BUG_OPTYPECONST
  37. static IntVec A(10,1);        // A = { 1 2 3 4 5 6 7 8 9 10 }
  38. static IntVec B(10,10,-1);        // B = { 10 9 8 7 6 5 4 3 2 1 }
  39. #else
  40. static const IntVec A(10,1);        // A = { 1 2 3 4 5 6 7 8 9 10 }
  41. static const IntVec B(10,10,-1);    // B = { 10 9 8 7 6 5 4 3 2 1 }
  42. #endif
  43.  
  44. void test1()
  45. {
  46.     BitVec L;
  47. // TYPEVec_CTOR_I
  48.     IntVec C;            // C = {}
  49. // TYPEVec_CTOR_TYPEVec    
  50.     IntVec T(A);            // T = A
  51.     cerr << "IntVec T(A): " << T << endl;
  52. // TYPEVec_CTOR_TYPESlice
  53.     IntVec U(A(0,5,2));        // U = { 1 3 5 7 9 }
  54.     cerr << "IntVec U(A(0,5,2)): " << U << endl;
  55. // TYPEVec_ASN_TYPEVec
  56.     C = U;
  57.     cerr << "C = U: " << C << endl;
  58. // TYPEVec_ASN_TYPEVec
  59.     C = C;
  60.     cerr << "C = C: " << C << endl;
  61. // TYPEVec_ASN_TYPESlice
  62.     C = A(0,5,2);            // C = { 1 3 5 7 9 }
  63.     cerr << "C = A(0,5,2): " << C << endl;
  64. // TYPEVec_ASN_TYPESlice
  65.     C = A;  C = C(0,5,2);        // C = { 1 3 5 7 9 }
  66.     cerr << "C = A; C = C(0,5,2): " << C << endl;
  67. // TYPEVec_ASN_TYPESlct
  68.     C = A[A>B];            // C = { 6 7 8 9 10 }
  69.     cerr << "C = A[A>B]: " << C << endl;
  70. // TYPEVec_ASN_TYPESlct
  71.     C = A;  C = C[C>B];        // C = { 6 7 8 9 10 }
  72.     cerr << "C = A;  C = C[C>B]: " << C << endl;
  73. // TYPEVec_ASN_TYPEPick
  74.     C = A[I];            // C = { 2 4 6 }
  75.     cerr << "C = A[I]: " << C << endl;
  76. // TYPEVec_ASN_TYPEPick
  77.     C = A;  C = C[I];        // C = { 2 4 6 }
  78.     cerr << "C = A;  C = C[I]: " << C << endl;
  79. // TYPEVec_ASN_TYPE
  80.     C = 0;
  81.     cerr << "C = 0: " << C << endl;
  82. // TYPESlice_ASN_TYPEVec
  83.     C = A;  C(0,5,2) = IntVec(5,-1,0);    // C = { -1 2 -1 4 -1 6 -1 8 -1 10 }
  84.     cerr << "C = A;  C(0,5,2) = IntVec(5,-1,0): " << C << endl;
  85. // TYPESlice_ASN_TYPESlice
  86.     C(1,5,2) = C(0,5,2);        // C = { -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 }
  87.     cerr << "C(1,5,2) = C(0,5,2): " << C << endl;
  88. // TYPESlice_ASN_TYPEPick
  89.     C(0,3,1) = A[I];        // C = { 2 4 6 -1 -1 -1 -1 -1 -1 -1 }
  90.     cerr << "C(0,3,1) = A[I]: " << C << endl;
  91. // TYPESlice_ASN_TYPESlct
  92.     C(3,3,1) = A[A<=3];        // C = { 2 4 6 1 2 3 -1 -1 -1 -1 }
  93.     cerr << "C(3,3,1) = A[A<=3]: " << C << endl;
  94. // TYPESlice_ASN_TYPE
  95.     C(0,6,1) = 0;            // C = { 0 0 0 0 0 0 -1 -1 -1 -1 }
  96.     cerr << "C(0,6,1) = 0:" << C << endl;
  97. // FRIEND_OP_TYPESlice__TYPEVec
  98.     C = -A;                // C = { -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 }
  99.     cerr << "C = -A: " << C << endl;
  100. // FRIEND_INCDECOP_TYPESlice__TYPEVec
  101. //    C++;                // C = { 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 }
  102.     cerr << "C++: "; (C++).printOn(cerr); cerr << endl;
  103. // FRIEND_TYPESlice_OP_TYPESlice__TYPEvec
  104.     C = A-B;            // C = { -9 -7 -5 -3 -1 1 3 5 7 9 }
  105.     cerr << "C = A-B: " << C << endl;
  106. // FRIEND_TYPESlice_OP_TYPE__TYPEVec
  107.     C = A-1;            // C = { 0 1 2 3 4 5 6 7 8 9 }
  108.     cerr << "C = A-1: " << C << endl;
  109. // FRIEND_TYPE_OP_TYPESlice__TYPEVec
  110.     C = 1 + A;            // C = { 2 3 4 5 6 7 8 9 10 11 }
  111.     cerr << "C = 1+A: " << C << endl;
  112. // FRIEND_TYPESlice_OP_TYPESlice__BitVec
  113.     L = A>B;
  114.     cerr << "A>B: " << L << endl;    // { 0 0 0 0 0 1 1 1 1 1 }
  115. // FRIEND_TYPESlice_OP_TYPE__BitVec
  116.     L = A<=5;            // { 1 1 1 1 1 0 0 0 0 0 }
  117.     cerr << "A<=5: " << L << endl;
  118. // FRIEND_TYPE_OP_TYPESlice__BitVec
  119.     L = 5<A;            // { 0 0 0 0 0 1 1 1 1 1 }
  120.     cerr << "5<A: " << L << endl;
  121. // FRIEND_TYPESlice_ASNOP_TYPESlice
  122.     C = A;  C += A;            // { 2 4 6 8 10 12 14 16 18 20 }
  123.     cerr << "C = A;  C += A: " << C << endl;
  124. // FRIEND_TYPESlice_ASNOP_TYPE
  125.     C -= 1;                    // { 1 3 5 7 9 11 13 15 17 19 }
  126.     cerr << "C -= 1: " << C << endl;
  127. // TYPEPick_ASN_TYPEVec
  128.     C = A;  C[I] = IntVec(3,-1,0);    // { 1 -1 3 -1 5 -1 7 8 9 10 }
  129.     cerr << "C = A; C[I] =  IntVec(3,-1,0): " << C << endl;
  130. // TYPEPick_ASN_TYPEPick
  131.     C[I] = A[I];            // { 1 2 3 4 5 6 7 8 9 10 }
  132.     cerr << "C[I] = A[I]: " << C << endl;
  133. // TYPEPick_ASN_TYPESlct
  134.     C[I] = A[A<=3];        // C = { 1 1 3 2 5 3 7 8 9 10 }
  135.     cerr << "C[I] = A[A<=3]: " << C << endl;
  136. // TYPEPick_ASN_TYPESlice
  137.     C[I] = A(0,3,2);        // C = { 1 1 3 3 5 5 7 8 9 10 }
  138.     cerr << "C[I] = A(0,3,2): " << C << endl;
  139. // TYPEPick_ASN_TYPE
  140.     C[I] = -1;            // C = { 1 -1 3 -1 5 -1 7 8 9 10 }
  141.     cerr << "C[I] = -1: " << C << endl;
  142. // TYPESlice_CTOR_TYPEPick
  143.     C = A[I]+B[I];            // C = { 11 11 11 }
  144.     cerr << "C = A[I]+B[I]: " << C << endl;
  145. }
  146.  
  147. void test2()
  148. {
  149.     BitVec L;
  150. // TYPEVec_CTOR_I
  151.     IntVec C;            // C = {}
  152. // TYPESlct_ASN_TYPEVec
  153.     C = A;  C[A<=5] = IntVec(5,-1,0);    // C = { -1 -1 -1 -1 -1 6 7 8 9 10 }
  154.     cerr << "C = A; C[A<=5] = IntVec(5,-1,0): " << C << endl;
  155. // TYPESlct_ASN_TYPEPick
  156.     C = A;  C[A<=3] = A[I];    // C = { 2 4 6 4 5 6 7 8 9 10 }
  157.     cerr << "C = A; C[A<=3] = A[I]: " << C << endl;
  158. // TYPESlct_ASN_TYPESlct
  159.     C = A;  C[A<=5] = B[A<=5];    // C = { 10 9 8 7 6 6 7 8 9 10 }
  160.     cerr << "C = A; C[A<=5] = B[A<=5]: " << C << endl;
  161. // TYPESlct_ASN_TYPESlice
  162.     C[A<=5] = A(0,5,1);        // C = { 1 2 3 4 5 6 7 8 9 10 }
  163.     cerr << "C = A; C[A<=5] = A(0,5,1): " << C << endl;
  164. // TYPESlct_ASN_TYPE
  165.     C[A<=5] = 0;            // C = { 0 0 0 0 0 6 7 8 9 10 }
  166.     cerr << "C = A; C[A<=5] = 0: " << C << endl;
  167. // TYPESlice_CTOR_TYPESlct
  168.     C = A[A<=5] + B[B<=5];    // C = { 6 6 6 6 6 }
  169.     cerr << "C = A[A<=5] + B[B<=5]: " << C << endl;
  170. // FRIEND_abs_TYPESlice
  171.     C = abs(IntVec(10,-5));    // C = { 5 4 3 2 1 0 1 2 3 4 }
  172.     cerr << "abs(IntVec(10,-5)): " << C << endl;
  173. // FRIEND_cumsum_TYPESlice
  174.     C = cumsum(IntVec(10,1));
  175.     cerr << "cumsum(IntVec(10,1)): " << C << endl;
  176. // FRIEND_delta_TYPESlice
  177.     C = delta(C);
  178.     cerr << "delta(cumsum(IntVec(10,1))): " << C << endl;
  179. // FRIEND_dot_TYPESlice_TYPESlice
  180.     cerr << "dot(A,B): " << dot(A,B) << endl;
  181. // FRIEND_max_TYPESlice
  182.     cerr << "max(A): " << max(A) << endl;
  183. // FRIEND_min_TYPESlice
  184.     cerr << "min(A): " << min(A) << endl;
  185. // FRIEND_prod_TYPESlice
  186.     cerr << "prod(A(0,5,1)): " << prod(A(0,5,1)) << endl;
  187. // FRIEND_reverse_TYPESlice
  188.     C = reverse(A);
  189.     cerr << "reverse(A): " << C << endl;
  190. // FRIEND_sum_TYPESlice
  191.     cerr << "sum(A): " << sum(A) << endl;
  192. }
  193.  
  194. main()
  195. {
  196.     cerr << "Test Vector IntVec class\n";
  197. // TYPEVec_CTOR_TYPEPTR_I
  198.     cerr << "IntVec I(3,1,2): " << I << endl;
  199. // TYPEVec_CTOR_I_TYPE_TYPE
  200.     cerr << "IntVec A(10,1): " << A << endl;
  201. // TYPEVec_CTOR_I_TYPE_TYPE
  202.     cerr << "IntVec B(10,10,-1): " << B << endl;
  203.     test1();
  204.     test2();
  205. }
  206.